1. Technical Field
This invention pertains to the field of information processing, particularly to the field of techniques for improving computing resources utilization and application program processing on-time throughput performance via reduced memory access times.
2. Descriptions of the Related Art
In conventional microprocessor and computer system architectures, without specific optimization of memory access operations, significant portions of the system processing capacity gets wasted as software programs have to stall while waiting for instructions and/or processing data being fetched from slow-access memories. In particular, slow-access memory access data rates have not increased at the same pace as the theoretical instruction/data processing capacities of microprocessors, including manycore processors. Conventional approaches for this so called memory-wall performance bottleneck rely on system software, which runs on the processing cores of the given microprocessor, to try to dynamically keep the needed program codes and data on fast-access on-chip memory based on the state of the user programs being processed. As such, the more dynamic the system software tries to make the fast- and slow-access memory content optimizations, the greater the portion of the system processing core capacity that is consumed by the system software tasks (e.g. copying memory contents between memory types of different access latencies and storage capacities) rather than processing user programs. On the other hand, without dynamic optimization of fast-access, fast-access memory contents, the user program processing performance is likely to at least periodically suffer from long access times to instructions/data residing at slow-access off-chip memories.
There thus is a need for innovations enabling dynamic optimization of the fast-access memory contents for microprocessors, including manycore processors being dynamically shared among a number of internally parallelized user programs, without relying on system software that would consume processing capacity of the processing cores of the given processor from the user programs running on it.